###!
Copyright (c) 2002-2016 "Neo Technology,"
Network Engine for Objects in Lund AB [http://neotechnology.com]

This file is part of Neo4j.

Neo4j is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
###

'use strict'

describe 'Directive: playTopic', () ->
  myFrame = {
    create: ->
  }
  beforeEach module 'neo4jApp.directives'
  beforeEach module 'neo4jApp.settings'
  beforeEach module 'LocalStorageModule'
  beforeEach(module ($provide) ->
    $provide.value('Frame', myFrame)
    return
  )
  beforeEach ->
    spyOn(myFrame, 'create')

  it 'should lowercase local guides', inject ($rootScope, $compile) ->
    scope = $rootScope.$new()
    element = angular.element '<a play-topic="Cypher"></a>'
    element = $compile(element)(scope)
    scope.$apply()
    element.triggerHandler('click')
    expect(myFrame.create).toHaveBeenCalledWith({input: ':play cypher'})

  it 'should remove hyphens from local guides', inject ($rootScope, $compile) ->
    scope = $rootScope.$new()
    element = angular.element '<a play-topic="movie-guide"></a>'
    element = $compile(element)(scope)
    scope.$apply()
    element.triggerHandler('click')
    expect(myFrame.create).toHaveBeenCalledWith({input: ':play movie guide'})

  it 'should keep casing on remote guide urls', inject ($rootScope, $compile) ->
    scope = $rootScope.$new()
    element = angular.element '<a play-topic="http://guides.neo4j.com/Start.html"></a>'
    element = $compile(element)(scope)
    scope.$apply()
    element.triggerHandler('click')
    expect(myFrame.create).toHaveBeenCalledWith({input: ':play http://guides.neo4j.com/Start.html'})

  it 'should keep hyphens on remote guide urls', inject ($rootScope, $compile) ->
    scope = $rootScope.$new()
    element = angular.element '<a play-topic="http://guides.neo4j.com/start-guides.html"></a>'
    element = $compile(element)(scope)
    scope.$apply()
    element.triggerHandler('click')
    expect(myFrame.create).toHaveBeenCalledWith({input: ':play http://guides.neo4j.com/start-guides.html'})
